home *** CD-ROM | disk | FTP | other *** search
/ PC World 2008 September / PCWorld_2008-09_cd.bin / v cisle / sadanastroju / delicious_bookmarks-2.0.64-fx.xpi / chrome / deliciousBookmarks.jar / content / yDebug.js < prev    next >
Encoding:
Text File  |  2008-06-19  |  7.6 KB  |  210 lines

  1. var YB_DEBUG_MESSAGE = 1;
  2. var YB_LOG_MESSAGE = 2;
  3.  
  4. function myLogToConsole(aMessage, aSourceName, aSourceLine, aLineNumber, 
  5.                         aColumnNumber, aFlags, aCategory)
  6. {
  7.   var consoleService = Components.classes["@mozilla.org/consoleservice;1"]
  8.                                  .getService(Components.interfaces.nsIConsoleService);
  9.   var scriptError = Components.classes["@mozilla.org/scripterror;1"]
  10.                               .createInstance(Components.interfaces.nsIScriptError);
  11.   scriptError.init(aMessage, aSourceName, aSourceLine, aLineNumber, 
  12.                    aColumnNumber, aFlags, aCategory);
  13.   consoleService.logMessage(scriptError);
  14. }
  15.  
  16. var yDebug = {
  17.    _initialized: false,
  18.    _dbgService: null,
  19.    _init: function() {
  20.       try {
  21.          this._dbgService = Components.classes[ "@mozilla.org/ybookmarks-debug-service;1" ];
  22.          this._dbgService = this._dbgService.getService( Components.interfaces.nsIYDebugService );
  23.          this._consoleService = Components.classes[ "@mozilla.org/consoleservice;1" ];
  24.          this._consoleService = this._consoleService.getService( Components.interfaces.nsIConsoleService );
  25.          this._initialized = true;
  26.       }
  27.       catch( e ) {
  28.       }
  29.    },
  30.  
  31.    Timer: function( name ) {
  32.        var t1, t2, delta, total = 0, count = 0;
  33.        this.start  = function() { ++count; t1 = new Date(); return this; };
  34.        this.end    = function() { t2 = new Date(); delta = t2 - t1; total += delta; return this; };
  35.        this.print  = function() { 
  36.            if (count > 1) {
  37.                /*
  38.                repl.print("Timer (" + name + "): " + delta + " ms" +
  39.                             "; called " + count + " times" +
  40.                             "; total: " + total + " ms" +
  41.                             "; avg time per call: " + (total / count) + " ms"
  42.                             ); 
  43.                */
  44.                yDebug.print("Timer (" + name + "): " + delta + " ms" +
  45.                             "; called " + count + " times" +
  46.                             "; total: " + total + " ms" +
  47.                             "; avg time per call: " + (total / count) + " ms"
  48.                             ); 
  49.            } else {
  50.                /*
  51.                repl.print("Timer (" + name + "): " + delta + " ms");
  52.                */
  53.                yDebug.print("Timer (" + name + "): " + delta + " ms");
  54.            }
  55.        };
  56.    },
  57.  
  58.    timedFunc: function( func, desc ) {
  59.         if (typeof arguments.callee.timer == "undefined") {
  60.             arguments.callee.timer = {};
  61.         }
  62.         var id = desc || func.desc || func.name;
  63.         if (typeof arguments.callee.timer[id] == "undefined") {
  64.             arguments.callee.timer[id] = new yDebug.Timer(id);
  65.         }
  66.         var timer = arguments.callee.timer[id];
  67.  
  68.         return function() {
  69.             timer.start();
  70.             var ret = func.apply(null, arguments);
  71.             timer.end();
  72.             timer.print();
  73.             return ret;
  74.         };
  75.    },
  76.  
  77.    on: function( refresh ) {
  78.       if( !this._initialized ) {
  79.          this._init()
  80.       }
  81.       if( this._initialized ) {
  82.          if( refresh == null ) {
  83.             refresh = false;
  84.          }
  85.          return this._dbgService.on( refresh );
  86.       }
  87.       return false;
  88.    },
  89.    
  90.    print: function( message, type ) {
  91.       if( !this._initialized ) {
  92.          this._init()
  93.       }
  94.       if( this._initialized ) {
  95.           var stackFrame = Components.stack.caller;
  96.           var filename = stackFrame.filename;
  97. /*          if (filename.indexOf("ybSidebarOverlay.xml") < 0 && filename.indexOf("Debug") < 0) return;*/
  98.          if( type == null ) {
  99.             type = YB_DEBUG_MESSAGE;
  100.          }
  101.          if( type == YB_LOG_MESSAGE ) {
  102.             this._dbgService.printLog( message );
  103.          }
  104.          else {
  105.             if( this._dbgService.on()) {
  106.                 // var stackFrame = Components.stack.caller;
  107.                 // var filename = stackFrame.filename;
  108.                 // if (filename == "ybSidebarOverlay.xml") {
  109.                     var lineNumber = stackFrame.lineNumber;
  110.                     var columnNumber = stackFrame.columnNumber;
  111.                     myLogToConsole(message, filename, null, lineNumber, columnNumber, Components.interfaces.nsIScriptError.warningFlag, 1);
  112.                     this._dbgService.printDebug( message );
  113.                     // }
  114.             }
  115.          }
  116.       }
  117.    },
  118.  
  119.    printStack: function(message) {
  120.         var consoleService = Components.classes["@mozilla.org/consoleservice;1"]
  121.                                  .getService(Components.interfaces.nsIConsoleService);
  122.  
  123.         var stackFrame = Components.stack.caller;
  124.         var arr = [message];
  125.         var msg;
  126.         while (stackFrame) {
  127.             var filename = stackFrame.filename;
  128.             if (filename == null) break;
  129.             var lineNumber = stackFrame.lineNumber;
  130.             arr.push("    " + filename + ":" + lineNumber);
  131.             stackFrame = stackFrame.caller;
  132.         }
  133.  
  134.         msg = arr.join("\n");
  135.         stackFrame = Components.stack.caller;
  136.         lineNumber = stackFrame.lineNumber;
  137.         columnNumber = stackFrame.columnNumber;
  138.         filename = stackFrame.filename;
  139.         myLogToConsole(msg, filename, null, lineNumber, columnNumber, Components.interfaces.nsIScriptError.errorFlag, 1);
  140.         this._dbgService.printLog( msg );
  141.    },
  142.  
  143.    assert: function( boolValue, msg ) {
  144.         if (boolValue) return true; 
  145.         else {
  146.             msg = "Assertion failed: " + msg;
  147.             var stackFrame = Components.stack.caller.caller;
  148.             var filename = stackFrame.filename;
  149.             var lineNumber = stackFrame.lineNumber;
  150.             var columnNumber = stackFrame.columnNumber;
  151.             alert(filename + ":" + lineNumber + ": " + msg);
  152.             // yDebug.print(msg);
  153.             myLogToConsole(msg, filename, null, lineNumber, columnNumber, Components.interfaces.nsIScriptError.errorFlag, 1);
  154.             return false;
  155.         }
  156.    },
  157.    
  158.    /* below to be used only for debugging*/
  159.    printOutArcs: function( datasource, resource ) {
  160.  
  161.          yDebug.print( " *********************" );
  162.          var properties = datasource.ArcLabelsOut( resource );
  163.  
  164.  
  165.          while ( properties.hasMoreElements() ) {
  166.            var s = properties.getNext();
  167.            s.QueryInterface( Components.interfaces.nsIRDFResource );
  168.            var target = datasource.GetTarget ( resource, s, true );
  169.            try {
  170.              target.QueryInterface ( Components.interfaces.nsIRDFLiteral );
  171.              yDebug.print ( "Literal:" + s.Value + " => " + target.Value);
  172.            } catch (e) {
  173.              try {
  174.                target.QueryInterface ( Components.interfaces.nsIRDFResource );
  175.                yDebug.print ( resource.Value + ": Resource => " + s.Value + " => " + target.Value );
  176.              } catch (e) {
  177.  
  178.                try {
  179.                  target.QueryInterface ( Components.interfaces.nsIRDFDate );
  180.                  yDebug.print ( "Date: " + s.Value + " => " + target.Value );
  181.                } catch (e) {
  182.                }
  183.  
  184.              }
  185.            }
  186.  
  187.          }
  188.    },
  189.    
  190.     printObject: function(aObject, message) {
  191.         var str = "";
  192.         if (!message) message = "";
  193.         str += message + ": ";     
  194.         if (aObject == null) {
  195.             str += "(null)";
  196.             yDebug.print(str);
  197.             return;
  198.         }
  199.         str += "{\n";
  200.         for (var prop in aObject) {
  201.             if (aObject.hasOwnProperty(prop)) {
  202.                 str += "    [" + prop + "]: " + "\"" + aObject[prop] + "\"\n";
  203.             }
  204.         }
  205.         str += "}\n";
  206.         yDebug.print(str);
  207.     }
  208.    
  209. };
  210.